package com.sherlocky.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class GzipUtils {
	/**
	 * 压缩XML
	 * @param str
	 * @return
	 * @throws IOException
	 * @date 2013年11月12日
	 */
	public static String zipXml(String str) throws IOException {
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		GZIPOutputStream gzip = new GZIPOutputStream(out);
		gzip.write(str.getBytes("UTF-8"));
		gzip.close();
		return new BASE64Encoder().encode(out.toByteArray());
	}
	
	/**
	 * 解压缩XML
	 * @param str
	 * @return
	 * @throws IOException
	 * @date 2013年11月12日
	 */
	public static byte[] unzipXml4Byte(String str) throws IOException {
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		byte[] bytes = new BASE64Decoder().decodeBuffer(str);
		GZIPInputStream gunzip = new GZIPInputStream(new ByteArrayInputStream(bytes));
		
		byte[] buffer  = new byte[4096];
		int n;
		while((n=gunzip.read(buffer)) != -1) {
			out.write(buffer, 0, n);
		}
		
		return out.toByteArray();
	}
}
